The methods of forward error correction (FEC) and automatic retry query (ARQ) error control schemes are known by people skilled in the art of data networking. ARQ schemes require additional check bits to be appended to each transmitted message, block, or frame to enable a receiving device to detect when data errors have occurred. Once an error is detected another copy of the transmitted message, block or frame is re-sent.
A simplistic method of ARQ is implemented using a Cyclic Redundancy Checker (CRC). A numeric value is computed from the bits in the message, block, or frame to be transmitted and is appended to the tail of the message. The receiving device receives the data and can detect if one or more errors have occurred in the received message by applying a polynomial function to the received message, block, or frame. If the result of the polynomial function does not equal zero, then an error has occurred and the message must be retransmitted. The quality of the communication path inversely relates to the number of data errors and required retransmission that occur in a network. Data transmitted over a low quality communication path will be more efficient with smaller retransmission blocks of data because more retransmissions are required. Transmission over a clean communication path will be more efficient with larger retransmission blocks of data, which are sent less often.
An additional method of detecting an error in a received message, block or frame is by calculating a checksum and appending the checksum to the end of the message, block or frame. The receiving device receives the message and re-calculates a checksum and compares the received checksum with the calculated checksum. If the checksum's do not match, an error has been detected and the message, block or frame must be partially or fully retransmitted. Traditionally communication systems have used fixed retransmission message, blocks, or frame sizes when the CRC or checksum ARQ methods are used.
With FEC, however, additional digits are added to each transmitted message by an encoder to enable the receiving device not only to detect errors but also to locate the position of the errors in the received message. The errors are then corrected by inverting the bits at the locations identified by the error locator polynomial in the received message. The greater the number of bits, within a frame to be correctable, the larger the encoder has to be with additional overhead bits being added in each frame. Traditional approaches to FEC establish a fixed bit size for the encoder. If the communication path is of high quality and few errors occur, bandwidth is wasted with the extra encoding of each message, block, or frame.
Therefore, there exists a need for a method and apparatus for dynamically adjusting the forward error correction and automatic request for retransmission parameters based on the quality of the received signal and data integrity.